package chixing.day15;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * 文件的操作
 * java.io.File : 文件夹，文件
 * directory : 目录
 * path 路径
 */
public class FileDemo {
    public static void main(String[] args) {
        File file1 = new File("E:\\2025-cx\\project\\PJ\\J01\\Javase\\note");
//        file.mkdir();//创建一个文件夹
        File file2 = new File("E:\\2025-cx\\project\\PJ\\J01\\Javase\\hello.text");
//        try {
//            file1.createNewFile();//创建一个文件
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        }

        //获得file1,file2 文件的名称
        System.out.println(file1.getName());
        System.out.println(file2.getName());
        //获得file1,file2 文件的路径
        System.out.println(file1.getPath());
        System.out.println(file2.getPath());
        //判断file1 是不是文件夹
        System.out.println(file1.isDirectory());
        //判断file2 是不是文件
        System.out.println(file2.isFile());
        //获得file1父文件夹的名称
        String parentName = file1.getParent();//E:\2025-cx\project\PJ\J01\Javase
        System.out.println(parentName);
        //获得file1父文件夹的对象
        File parentFile = file1.getParentFile();
        System.out.println(parentFile);//E:\2025-cx\project\PJ\J01\Javase
        System.out.println(parentFile.getName());//Javase

        File file3 = new File("E:\\2025-cx\\project\\PJ\\J01\\Javase");
        System.out.println("获得file3下面的其他子文件(夹)对象");
        File[] subFiles = file3.listFiles();//获得的是对象
        for (File f:subFiles) {
            System.out.println(f.getName());
        }
        System.out.println("--------------------------------");
        String[] list = file3.list();//获得的是对象名
        for (String s:list) {
            System.out.println(s);
        }
        System.out.println("=====================================");
        String path = "E:\\2025-cx\\project\\PJ\\J01\\Javase";
        String fileNaem="hello.text";
        System.out.println(searchFile(path, fileNaem));
    }

    /**
     * 在指定的目录下 查找文件
     * @param path  指定的目录
     * @param fileName 要查找的文件名称
     * @return 若找到该文件，则返回该文件对象；若找不到，则返回null
     */
    public static  File  searchFile(String path, String fileName){
        File file = new File(path);
        //先遍历这个文件夹中的文件，然后判断是否存在
        File[] subFiles = file.listFiles();//获得的是对象
        for (File f:subFiles) {
            if (f.getName().equals(fileName)){
                return f;
            }
        }
        return null;
    }
    /**
     * 获得指定目录下的所有的子文件，若子文件对象是 文件夹，则继续遍历 直到是子文件对象
     * 注意判断是文件夹还是文件， 以及空文件夹的处理
     * @param path 指定目录
     * @return 返回所有的子文件对象集合
     */
    public static List<File> getAllSubFiles(String path){
        File file = new File(path);
        File[] files = file.listFiles();
        for (File f:files) {
            if (f.isDirectory()){

            }
        }
        return null;
    }
}
